package com.woniuxy.system.common.exception;

import com.woniuxy.system.common.Result;
import com.woniuxy.system.common.enums.IResultCode;
import com.woniuxy.system.common.enums.impl.ResultCode;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

@RestControllerAdvice
public class GlobalException {

    /**
     * 通过@ExceptionHandler注解，指定要处理的异常类型
     */
    @ExceptionHandler(BusinessException.class)
    public Result handlerBusinessException(BusinessException e) {
        e.printStackTrace(); // 这里不写：项目出异常，直接返回的是状态码，控制台没有异常信息。
        IResultCode resultCode = e.getResultCode();
        return Result.fail(resultCode);
    }

    /**
     * 如果没有精确匹配的异常，走Exception异常处理
     */
    @ExceptionHandler(Exception.class)
    public Result handlerException(Exception e) {
        e.printStackTrace();
        return Result.fail(ResultCode.FAIL);
    }
}
